# nbi:hide_in
from __future__ import print_function
from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets
import nbinteract as nbi
from IPython.display import display
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.pyplot import figure, savefig
from pandas import DataFrame
from IPython.display import HTML, IFrame
import sys
sys.path.append('/home/nico/.local/lib/python3.8/site-packages')
from lcapy import Circuit
fig_sz_x = 10
fig_sz_y = 10
fig_dpi = 80 # dpi
fig_font_family = 'Ubuntu'
fig_font_size = 14
plt.rcParams.update({'font.size':fig_font_size})
plt.rcParams.update({'font.family':fig_font_family})
Veamos que es un ángulo.
Un ángulo $AoB$ consta de dos rayos R1 y R2 con un vértice común O. Se suele interpreta a un ángulo como la rotación del rayo R1 sobre R2. En este caso R1 se llama lado inicial y a R2 se lo llama lado final del ángulo. Si la rotación es en sentido antihorario, el ángulo se lo considera positivo y si la rotación es en sentido horario se lo considera negativo.
La medida de un ángulo es la cantidad de rotación respecto al vértice requerida para mover R1 sobre R2. De manera intuitiva, esto es cuánto se "abre" el ángulo.
Parece mas complicado de lo que es, esto quiere decir que dividimos a la circunferencia en 360 partes (es como cortar una pizza pero en mas porciones). La siguiente imagen lo muestra, pero tenga en cuenta que no podemos dibujar todas las lineas ya que seria muy difícil de visualizar.
Seguramente les recuerde a un transportador, ¿será casualidad?
Ahora veremos otra unidad de ángulos que es la que se utiliza por excelencia en el área técnica el radian.
Esto quiere decir que el ángulo vale $1[rad]$ cuando el arco de circunferencia determinado por los dos rayos tiene una longitud igual al valor del radio.
Al principio puede parecer un poco raro pero tiene mucho utilidad. Esta medida se basa en la longitud total de la circunferencia y este no es un número cualquiera, como ustedes ya saben por razones de la naturaleza ese número vale $2\pi$
Utilizar ángulos en radianes es de mucha utilidad ya que muchos ángulos útiles son múltiplos y submúltiplos de $\pi$. Por otra parte, verán mas adelante que en matemática es la unidad mas utilizada.
La siguiente animación pretende mostrar para cada ángulo el valor de la longitud del arco llamada S.
# nbi:hide_in
%matplotlib inline
from matplotlib.animation import FuncAnimation
plt.rcParams.update({'font.size':fig_font_size})
plt.rcParams.update({'font.family':fig_font_family})
plt.style.use('seaborn-pastel')
N = 200
N1 = 9
TWOPI = 2*np.pi
t = np.linspace(0, 2*np.pi, N)
t1 = np.array([0, 1, 2, 3, np.pi, 4, 5, 6, 2*np.pi])
x = np.cos(t)
y = np.sin(t)
x1 = np.array([np.cos(0),np.cos(1),np.cos(2),np.cos(3),np.cos(np.pi),np.cos(4),np.cos(5),np.cos(6),np.cos(2*np.pi)],dtype='float')
y1 = np.array([np.sin(0),np.sin(1),np.sin(2),np.sin(3),np.sin(np.pi),np.sin(4),np.sin(5),np.sin(6),np.sin(2*np.pi)],dtype='float')
figure
fig = plt.figure(figsize=(6, 6), dpi= fig_dpi, facecolor='w', edgecolor='k')
ax = plt.axes(xlim=(-1.1,1.1), ylim=(-1.1,1.1))
plt.axhline(0, color="grey")
plt.axvline(0, color="grey")
plt.grid('on')
plt.xlabel('$ \\theta[rad]$',fontsize=14)
plt.title("$Radianes$" )
titas = ['$\\theta=0[rad]$','$\\theta=1[rad]$', '$\\theta=2[rad]$', '$\\theta=3[rad]$',
'$\\theta=\pi[rad]$', '$\\theta=4[rad]$', '$\\theta=5[rad]$',
'$\\theta=6[rad]$', '$\\theta=2\pi[rad]$']
texto = ['$S=0$','$S=r$', '$s=2r$', '$s=3r$', '$s=\pi r$', '$s=4r$', '$s=5r$',
'$s=6r$', '$s=2\pi r$']
ax.plot(x,y)
#ax.legend(loc='upper right')
redDot, = ax.plot([], [], 'ro')
text = ax.text(.8,.95,'',fontsize=16,bbox=dict(facecolor='red', alpha=.3),
horizontalalignment='center', verticalalignment='center')
tita = ax.text(.5,.2,'',fontsize=16,bbox=dict(facecolor='lightblue', alpha=1),
horizontalalignment='center', verticalalignment='center')
arc, = ax.plot([],[],'r', lw=2)
arc1, = ax.plot([],[],'blue', lw=2)
line, = plt.plot(x,y,'r', lw=2)
def init():
line, = ax.plot(1,0, 'ro')
return line,
def animate(i):
plt.close() # por algun motivo que desconozco poniendolo aca borra el plot extra que aparece.
line.set_data([0,x1[i]], [0,y1[i]])
t = np.linspace(0,t1[i],1000)
arc.set_data(np.cos(t),np.sin(t))
arc1.set_data(.2*np.cos(t),.2*np.sin(t))
text.set_text(texto[i])
tita.set_text(titas[i] )
return redDot, arc, arc1, text, tita,line,
# create animation using the animate() function
anim = FuncAnimation(fig, animate, frames=N1, interval=400, blit=True, repeat=True)
HTML(anim.to_jshtml())
De lo visto hasta ahora podemos notar que media vuelta corresponden a $180°$ en el sistema sexagecimal. En el caso del sistema en radianes, media vuelta corresponde a $\pi[rad]$. Por lo cual ambas medidas son equivalentes, solo que con distintas unidades. Es como decir que $100ml$ es lo mismo que $100cc$ al medir el volumen de un líquido.
$$180° = \pi [rad]$$$$1° = \frac{\pi}{180}$$$$1° = 0,01745$$De la misma forma si despejamos los radianes obtenemos:
$$\pi [rad] = 180° $$$$1 [rad = ]\frac{180°}{\pi}$$$$1 [rad] = 57,246° $$Utilizando regla de 3 simple podemos pasar ángulos de una unidad a ora.
Antes de comenzar no olvide presionar el botón Show Widgets para poder ver la animación
nbi.short_answer('20°', lambda x: float(x) == np.round((20/180)*np.pi,3))
nbi.short_answer('270°', lambda x: float(x) == np.round((270/180)*np.pi,3))
nbi.short_answer('45°', lambda x: float(x) == np.round((45/180)*np.pi,3))
nbi.short_answer('150°', lambda x: float(x) == np.round((150/180)*np.pi,3))
nbi.short_answer('π/2[rad]', lambda x: float(x) == np.round(((np.pi/2)*180)/np.pi,3))
nbi.short_answer('π/6[rad]', lambda x: float(x) == np.round(((np.pi/6)*180)/np.pi,3))
nbi.short_answer('2π/5[rad]', lambda x: float(x) == np.round(((2*np.pi/5)*180)/np.pi,3))
nbi.short_answer('3π/4[rad]', lambda x: float(x) == np.round(((3*np.pi/4)*180)/np.pi,3))
Con las animaciones anteriores queda claro que los valores se repiten en módulo en cada cuadrante, por lo cual definiendo solo los ángulos del primer cuadrante y utilizando propiedades, como la que acabamos de describir de los signos, podemos obtener su valor para cualquier ángulo. Esto escapa de esta materia pero conocerlo les va a permitir tener una mayor comprensión al momento de graficarlas.
El método es muy simple, voy a describir paso a paso como completar la siguiente tabla:
| Función | $0[rad]$ | $\frac{\pi}{6}[rad]$ | $\frac{\pi}{4}[rad]$ | $\frac{\pi}{3}[rad]$ | $\frac{\pi}{2}[rad]$ |
|---|---|---|---|---|---|
| $sen$ | --- | --- | --- | --- | --- |
| $cos$ | --- | --- | --- | --- | --- |
| $tg$ | --- | --- | --- | --- | --- |
Para el caso del seno los casos son los siguientes:
Rellenar los espacios con los números 0, 1, 2, 3, 4.
Obtener la raíz cuadrada de esos números.
Dividir todos los resultados por 2.
| Pasos | $0[rad]$ | $\frac{\pi}{6}[rad]$ | $\frac{\pi}{4}[rad]$ | $\frac{\pi}{3}[rad]$ | $\frac{\pi}{2}[rad]$ |
|---|---|---|---|---|---|
| $1$ | $0$ | $1$ | $2$ | $3$ | $4$ |
| $2$ | $\sqrt{0}$ | $\sqrt{1}$ | $\sqrt{2}$ | $\sqrt{3}$ | $\sqrt{4}$ |
| $3$ | $\frac{\sqrt{0}}{2}$ | $\frac{\sqrt{1}}{2}$ | $\frac{\sqrt{2}}{2}$ | $\frac{\sqrt{3}}{2}$ | $\frac{\sqrt{4}}{2}$ |
| $4$ | $0$ | $\frac{1}{2}$ | $\frac{\sqrt{2}}{2}$ | $\frac{\sqrt{3}}{2}$ | $1$ |
Para el $coseno$ es el mismo procedimiento solo que en vez de ir de $0$ a $4$, tiene que ir de $4$ a $0$. Para el caso de la $tg$ hay que dividir el valor del $seno$ por el valor del $coseno$.
La tabla queda de la siguiente forma:
| Función | $0[rad]$ | $\frac{\pi}{6}[rad]$ | $\frac{\pi}{4}[rad]$ | $\frac{\pi}{3}[rad]$ | $\frac{\pi}{2}[rad]$ |
|---|---|---|---|---|---|
| $sen$ | $0$ | $\frac{1}{2}$ | $\frac{\sqrt{2}}{2}$ | $\frac{\sqrt{3}}{2}$ | $1$ |
| $cos$ | $1$ | $\frac{\sqrt{3}}{2}$ | $\frac{\sqrt{2}}{2}$ | $\frac{1}{2}$ | $0$ |
| $tg$ | $0$ | $\frac{\sqrt{3}}{3}$ | $1$ | $\sqrt{3}$ | $\nexists $ |
Para finalizar queda ver un último concepto que utilizaremos al estudiar señales.
Supongamos que un punto se mueve a lo largo de una circunferencia, como muestra la animación. Hay dos formas de describir su movimiento velocidad lineal y velocidad angular.
# nbi:hide_in
%matplotlib inline
from matplotlib.animation import FuncAnimation
plt.rcParams.update({'font.size':fig_font_size})
plt.rcParams.update({'font.family':fig_font_family})
plt.style.use('seaborn-pastel')
N = 200
TWOPI = 2*np.pi
t = np.linspace(0, 2*np.pi, N)
x = np.cos(t)
y = np.sin(t)
fig, ax = plt.subplots(figsize=(6, 6), dpi= fig_dpi, facecolor='w', edgecolor='k')
plt.axhline(0, color="grey")
plt.axvline(0, color="grey")
plt.grid('on')
plt.xlabel('$ x$',fontsize=14)
plt.ylabel('$y$',fontsize=14,rotation='horizontal')
plt.title("Velocidad" )
plt.plot(x,y)
ax = plt.axis([-1.1,1.1,-1.1,1.1])
redDot, = plt.plot([], [], 'ro')
plt.text(.1,.1,'$\\theta$',fontsize=16,horizontalalignment='center', verticalalignment='center')
plt.text(.8,.8,'$S$',fontsize=16,horizontalalignment='center', verticalalignment='center')
arc, = plt.plot([],[],'r', lw=2)
def init():
line, = ax.plot(1,0, 'ro')
return line,
def animate(i):
plt.close() # por algun motivo que desconozco poniendolo aca borra el plot extra que aparece.
redDot.set_data(x[i],y[i])
t1 = np.linspace(0,t[i],N)
arc.set_data(np.cos(t1),np.sin(t1))
return redDot, arc,
# create animation using the animate() function
anim = FuncAnimation(fig, animate, frames=N, interval=40, blit=True, repeat=True)
HTML(anim.to_jshtml())
Podemos relacionar ambas de la siguiente forma:
$$v = \frac{S}{t}$$$$s = \theta*r$$($r$ es el radio)
por lo cual queda
$$\boxed{v = r* \theta}$$Copyright
The notebook is provided as Open Educational Resource. Feel free to use the notebook for your own educational purposes. The text is licensed under Creative Commons Attribution-NoComercial 4.0 Internacional, the code of the IPython examples under the MIT license. Please attribute the work as follows: Aplicaciones de electrónica Analógica by Nicolás Ferragamo.